# Введение

Описание архитектуры осуществляется через манифесты. Поддерживаются два формата файлов: JSON и YAML.
Предпочтительным является формат YAML. Этот формат поддерживает комментарии, что существенно упрощает описание
архитектуры.

Пример манифеста можно посмотреть в поставке (./public/documentation). Он описывает
архитектуру DocHub. Манифест состоит из разделов:
* **[import](/docs/dochub.imports)** -
  Позволяет подключать дополнительные манифесты.
* **[components](/docs/dochub.components)** -
  Архитектурные компоненты.
* **[contexts](/docs/dochub.contexts)** -
  Контексты представления архитектурных компонентов. Позволяет выделить группу
  компонентов и отобразить ее по смыслу заложенному в контекст. Например, выделить
  все компоненты инфраструктуры. Через контексты реализуется смысл
  [C4 Model](https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_C4).
* **[aspects](/docs/dochub.aspects)** -
  Архитектурные аспекты. Позволяют выделить и отобразить на схеме компоненты
  реализующие, например, бизнес-функцию.
* **[docs](/docs/dochub.docs)** -
  Документы необходимые для детального описания архитектуры. Например, контракты в
  формате [OpenAPI](/docs/dochub.swagger), [AsyncApi](/docs/dochub.asyncapi) событийно-ориентированные сервисы, [PlantUML](/docs/dochub.plantuml) диаграммы, 
  [Markdown](/docs/dochub.markdown) документация и аналитические [таблицы](/docs/dochub.tables).
* **[technologies](/docs/dochub.technologies)** - 
  Технологический стек. Позволяет строить [технологический радар](/docs/dochub.radar). 
* **[datasets](/docs/dochub.datasets)** - 
  Источники данных. Позволяют делать запросы к [данным архитектуры](/docs/dochub.datasets#query-to-data-arch) и внешним рескрсам. 
* **[functions](/docs/dochub.functions)** - 
  Функции. Позволяют декларировать операции для последующего использования в JSONata запросах. 
* **[namespaces](/docs/dochub.namespaces)** (устарело) -
  Определяет пространства имен. Все архитектурные объекты должны иметь уникальные
  идентификаторы. Пространство имен позволяет избежать конфликта идентификаторов в случае
  описания нескольких подсистем имеющих схожие архитектурные черты.
* **[rules](/docs/dochub.rules)** -
  Архитектурные правила. Позваляют определить правила, которым должен отвечать код архитектуры.
* **[entities](/docs/dochub.flex_metamodel.entities)** -
  Сущности расширенной метамодели. Позволяют создавать уникальные сущности метамодели или расширять существующие.

# Термины и определения

* **Архитектурный компонент** - атомарный элемент представления архитектуры на диаграмме.
* **Архитектурный объект** - выраженный манифестом архитектурный компонент.
* **Манифест** - структурированный файл, в котором описываются архитектурные компоненты и связи между ними.


